﻿///
/// \file CComFunc.h
/// \brief 一些通用函数功能
///
/// \author 李荣业
/// \version V1.0
/// \date 2018.09.03
///

#ifndef CComFunc_H
#define CComFunc_H

#include "shared_export.h"

class comlibSHARED_EXPORT CComFunc
{
public:
    ///
    /// \brief qtGuiWait 等待sleep一段时间，同时Qt界面不会卡死，适合在轮询循环中调用
    /// \param ms 等待的时间, 单位: 毫秒(ms)
    ///
    static void qtGuiWait(unsigned long ms, bool isResponseUser = false);

    ///
    /// \brief delay Qt中调用等待一段时间，Qt界面不会卡死，同时响应用户输入事件
    /// \param msec 等待的时间, 单位: 毫秒(ms)
    ///
    static void delay(int msec);

    ///
    /// \brief split 字符串分割
    /// \param src 源字符串，其中的分隔符会被置为'\0'
    /// \param separator 分割字符串
    /// \param dest 分割后的字符串数组
    /// \param destLen dest数组允许长度
    /// \return 分割后的字符串个数
    ///
    static int split(char * src, const char * separator, char ** dest, int destLen);

    ///
    /// \brief clearDir Qt中调用，清空目录，保留目录本身
    /// \param path 路径
    /// \return 是否成功
    ///
    static bool clearDir(const QString & path);

    ///
    /// \brief deleteDir 删除目录
    /// \param path 路径
    /// \return 是否成功
    ///
    static bool deleteDir(const QString & path);

    ///
    /// \brief checkCreateDir 若目录不存在，创建目录
    /// \param path 路径
    /// \return 是否成功
    ///
    static bool checkCreateDir(const QString & path);

    /// \brief 创建空目录，若目录已存在，清空它
    static bool createEmptyDir(const QString & path);

    ///
    /// \brief average 计算平均值，会跳过值为0的数据
    /// \param p 数据
    /// \param len 数据个数
    /// \return 平均值
    ///
    static double average(const double * p, int len);

    /// \brief 对浮点数保留n位小数后输出
    /// \param d 原有数据
    /// \param n 保留的小数位数
    /// \param isRounding 是否四舍五入
    /// \return 转换后的数据
    static double precision(double d, int n = 2, bool isRounding = true);

    ///
    /// \brief loadTranslateFile Qt中调用，加载翻译文件
    /// \param fileName 翻译文件名
    /// \return 是否成功
    ///
    static bool loadTranslateFile(const QString & fileName);

    /// \brief setProcessAutoRun 设置进程开机启动
    /// \param appPath 需要设置/取消的自启动软件的“绝对路径”
    /// \param enable 是否开机启动
    static void setProcessAutoRun(const QString & appPath, bool enable);
    static void setProcessAutoRun(bool enable);
    static bool checkAppIsRunning();
};

#endif /*CComFunc_H*/
